package luo.hui.jiang.tree;

/**
 * @author 罗惠江
 * @version 1.0
 * @email 1511619294@qq.com
 * @date 2020/8/9 13:19
 */
public class ThreadedBinaryTreeDemo {
    public static void main(String[] args) {
        // 测试一把中序线索二叉树的功能
        HeroNode root = new HeroNode(1, "tom");
        HeroNode node2 = new HeroNode(3, "jack");
        HeroNode node3 = new HeroNode(6, "smith");
        HeroNode node4 = new HeroNode(8, "mary");
        HeroNode node5 = new HeroNode(10, "king");
        HeroNode node6 = new HeroNode(14, "dim");

        // 二叉树，后面我们要递归创建，现在简单处理使用手动创建
        root.setLeft(node2);
        root.setRight(node3);
        node2.setLeft(node4);
        node2.setRight(node5);
        node3.setLeft(node6);

        // 测试中序线索化

    }
}

class ThreadedBinaryTree {
//    private HeroNode root;
//
//    // 为了实现线索化，需要创建要给指向当前节点的前驱结合点的指针，
//    // 递归进行线索化时，pre 总是保留前一个节点。
//    private HeroNode pre = null;
//
//    // 重载一把threadNodes 方法
//    public void threadedNodes() {
//        this.threadedNodes();
//    }
//
//    // 遍历线索化的二叉树的方法
//    public void threadedList() {
//        // 一个变量，存储当前遍历的节点，从root 开始
//        HeroNode node = root;
//        while (node != null) {
//            // 循环的找到leftType == 1 的节点，第一个找到的就是 8 节点
//            // 后面随着遍历而变化，因为当leftType == 1 时，说明该节点是安卓线索化
//            // 处理后的有效节点
//            while (node.getLefType() == 0) {
//                node = node.getLeft();
//            }
//            // 打印当前这个节点
//            System.out.println(node);
//            // 如果当前节点的右指针指向的是后继节点，就一直输出
//            while (node.getRightType() == 1) {
//                // 获取到当前节点的后继节点
//                node = node.getRight();
//                System.out.println(node);
//            }
//            // 替换这个遍历的节点
//            node = node.getRight();
//        }
//    }
//    // 编写对二叉树进行中序线索化的方法
//

}
